<!DOCTYPE html>
<html prefix="og: http://ogp.me/ns# article: http://ogp.me/ns/article# " lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>reducing-dimensionality-with-pca | 绿萝间</title>
<link href="../assets/css/all-nocdn.css" rel="stylesheet" type="text/css">
<link href="../assets/css/ipython.min.css" rel="stylesheet" type="text/css">
<link href="../assets/css/nikola_ipython.css" rel="stylesheet" type="text/css">
<meta name="theme-color" content="#5670d4">
<meta name="generator" content="Nikola (getnikola.com)">
<link rel="alternate" type="application/rss+xml" title="RSS" href="../rss.xml">
<link rel="canonical" href="https://muxuezi.github.io/posts/reducing-dimensionality-with-pca.html">
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
    tex2jax: {
        inlineMath: [ ['$','$'], ["\\(","\\)"] ],
        displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
        processEscapes: true
    },
    displayAlign: 'center', // Change this to 'center' to center equations.
    "HTML-CSS": {
        styles: {'.MathJax_Display': {"margin": 0}}
    }
});
</script><!--[if lt IE 9]><script src="../assets/js/html5.js"></script><![endif]--><meta name="author" content="Tao Junjie">
<link rel="prev" href="putting-it-all-together-with-pipelines.html" title="putting-it-all-together-with-pipelines" type="text/html">
<link rel="next" href="scaling-data-to-the-standard-normal.html" title="scaling-data-to-the-standard-normal" type="text/html">
<meta property="og:site_name" content="绿萝间">
<meta property="og:title" content="reducing-dimensionality-with-pca">
<meta property="og:url" content="https://muxuezi.github.io/posts/reducing-dimensionality-with-pca.html">
<meta property="og:description" content="用主成分分析降维¶








现在是时候升一级了！主成分分析（Principal component analysis，PCA）是本书介绍的第一个高级技术。到目前为止都是些简单的统计学知识，而PCA将统计学和线性代数组合起来实现降维，堪称简单模型的杀手锏。









Getting ready¶








PCA是scikit-learn的一个分解模块。还有一些分解模块后面会介">
<meta property="og:type" content="article">
<meta property="article:published_time" content="2015-07-27T14:58:33+08:00">
<meta property="article:tag" content="CHS">
<meta property="article:tag" content="ipython">
<meta property="article:tag" content="Machine Learning">
<meta property="article:tag" content="Python">
<meta property="article:tag" content="scikit-learn cookbook">
</head>
<body>
<a href="#content" class="sr-only sr-only-focusable">Skip to main content</a>

<!-- Menubar -->

<nav class="navbar navbar-inverse navbar-static-top"><div class="container">
<!-- This keeps the margins nice -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-navbar" aria-controls="bs-navbar" aria-expanded="false">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="https://muxuezi.github.io/">

                <span id="blog-title">绿萝间</span>
            </a>
        </div>
<!-- /.navbar-header -->
        <div class="collapse navbar-collapse" id="bs-navbar" aria-expanded="false">
            <ul class="nav navbar-nav">
<li>
<a href="../archive.html">Archive</a>
                </li>
<li>
<a href="../categories/">Tags</a>
                </li>
<li>
<a href="../rss.xml">RSS feed</a>

                
            </li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
    <a href="reducing-dimensionality-with-pca.ipynb" id="sourcelink">Source</a>
    </li>

                
            </ul>
</div>
<!-- /.navbar-collapse -->
    </div>
<!-- /.container -->
</nav><!-- End of Menubar --><div class="container" id="content" role="main">
    <div class="body-content">
        <!--Body content-->
        <div class="row">
            
            
<article class="post-text h-entry hentry postpage" itemscope="itemscope" itemtype="http://schema.org/Article"><header><h1 class="p-name entry-title" itemprop="headline name"><a href="#" class="u-url">reducing-dimensionality-with-pca</a></h1>

        <div class="metadata">
            <p class="byline author vcard"><span class="byline-name fn">
                    Tao Junjie
            </span></p>
            <p class="dateline"><a href="#" rel="bookmark"><time class="published dt-published" datetime="2015-07-27T14:58:33+08:00" itemprop="datePublished" title="2015-07-27 14:58">2015-07-27 14:58</time></a></p>
            
        <p class="sourceline"><a href="reducing-dimensionality-with-pca.ipynb" id="sourcelink">Source</a></p>

        </div>
        

    </header><div class="e-content entry-content" itemprop="articleBody text">
    <div tabindex="-1" id="notebook" class="border-box-sizing">
    <div class="container" id="notebook-container">

<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="用主成分分析降维">用主成分分析降维<a class="anchor-link" href="reducing-dimensionality-with-pca.html#%E7%94%A8%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90%E9%99%8D%E7%BB%B4">¶</a>
</h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>现在是时候升一级了！主成分分析（Principal component analysis，PCA）是本书介绍的第一个高级技术。到目前为止都是些简单的统计学知识，而PCA将统计学和线性代数组合起来实现降维，堪称简单模型的杀手锏。</p>
<!-- TEASER_END -->
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Getting-ready">Getting ready<a class="anchor-link" href="reducing-dimensionality-with-pca.html#Getting-ready">¶</a>
</h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>PCA是scikit-learn的一个分解模块。还有一些分解模块后面会介绍。让我们用<code>iris</code>数据集演示一下，你也可以用自己的数据集：</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [1]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn</span> <span class="k">import</span> <span class="n">datasets</span>
<span class="n">iris</span> <span class="o">=</span> <span class="n">datasets</span><span class="o">.</span><span class="n">load_iris</span><span class="p">()</span>
<span class="n">iris_X</span> <span class="o">=</span> <span class="n">iris</span><span class="o">.</span><span class="n">data</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="How-to-do-it...">How to do it...<a class="anchor-link" href="reducing-dimensionality-with-pca.html#How-to-do-it...">¶</a>
</h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>首先导入分解模块：</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [2]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn</span> <span class="k">import</span> <span class="n">decomposition</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>然后，初始化一个PCA对象：</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [3]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">pca</span> <span class="o">=</span> <span class="n">decomposition</span><span class="o">.</span><span class="n">PCA</span><span class="p">()</span>
<span class="n">pca</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">
<div class="prompt output_prompt">Out[3]:</div>


<div class="output_text output_subarea output_execute_result">
<pre>PCA(copy=True, n_components=None, whiten=False)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>和scikit-learn其他对象相比，PCA的参数很少。这样PCA对象就创建了，下面用<code>fit_transform</code>处理<code>iris_X</code>数据：</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [6]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">iris_pca</span> <span class="o">=</span> <span class="n">pca</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">iris_X</span><span class="p">)</span>
<span class="n">iris_pca</span><span class="p">[:</span><span class="mi">5</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">
<div class="prompt output_prompt">Out[6]:</div>


<div class="output_text output_subarea output_execute_result">
<pre>array([[ -2.68420713e+00,  -3.26607315e-01,   2.15118370e-02,
          1.00615724e-03],
       [ -2.71539062e+00,   1.69556848e-01,   2.03521425e-01,
          9.96024240e-02],
       [ -2.88981954e+00,   1.37345610e-01,  -2.47092410e-02,
          1.93045428e-02],
       [ -2.74643720e+00,   3.11124316e-01,  -3.76719753e-02,
         -7.59552741e-02],
       [ -2.72859298e+00,  -3.33924564e-01,  -9.62296998e-02,
         -6.31287327e-02]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>这样PCA就完成了，我们可以看看降维的效果：</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [8]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">pca</span><span class="o">.</span><span class="n">explained_variance_ratio_</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">
<div class="prompt output_prompt">Out[8]:</div>


<div class="output_text output_subarea output_execute_result">
<pre>array([ 0.92461621,  0.05301557,  0.01718514,  0.00518309])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="How-it-works...">How it works...<a class="anchor-link" href="reducing-dimensionality-with-pca.html#How-it-works...">¶</a>
</h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>PCA是在数据分析中有一般性的数学定义和具体的应用场景。PCA用正交向量集表示原始数据集。</p>
<p>通常，PCA将原始数据集映射到新的空间中，里面每个列向量都是彼此正交的。从数据分析的视角看，PCA将数据集的协方差矩阵变换成若干能够“解释”一定比例变量的列向量。例如，在<code>iris</code>数据集中，92.5%的变量可以由第一个主成份表示。</p>
<p>数据分析里面维度多会导致维度灾难，因此降维至关重要。通常算法处理高维训练集时会出现拟合过度（overfit）的情况，于是难以把握测试集的一般性特征。如果数据集的真实结构可以用更少的维度表示，那么通常都值得一试。</p>
<p>为了演示这点，我们用PCA将<code>iris</code>数据集转换成二维数据。<code>iris</code>数据集用全部的维度通常可以很好的分类：</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [9]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">pca</span> <span class="o">=</span> <span class="n">decomposition</span><span class="o">.</span><span class="n">PCA</span><span class="p">(</span><span class="n">n_components</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="n">iris_X_prime</span> <span class="o">=</span> <span class="n">pca</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">iris_X</span><span class="p">)</span>
<span class="n">iris_X_prime</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">
<div class="prompt output_prompt">Out[9]:</div>


<div class="output_text output_subarea output_execute_result">
<pre>(150, 2)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>我们的矩阵现在是$150 \times 2$，不是$150 \times 4$了。二维变量更容易可视化：</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [12]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="o">%</span><span class="k">matplotlib</span> inline
<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="k">import</span> <span class="n">pyplot</span> <span class="k">as</span> <span class="n">plt</span>
<span class="n">f</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>
<span class="n">ax</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">iris_X_prime</span><span class="p">[:,</span><span class="mi">0</span><span class="p">],</span> <span class="n">iris_X_prime</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">c</span><span class="o">=</span><span class="n">iris</span><span class="o">.</span><span class="n">target</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s2">"PCA 2 Components"</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">
<div class="prompt output_prompt">Out[12]:</div>


<div class="output_text output_subarea output_execute_result">
<pre>&lt;matplotlib.text.Text at 0x84571d0&gt;</pre>
</div>

</div>

<div class="output_area">
<div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="%0A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%0ASUVORK5CYII=">
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>把数据集降成二维之后还是分离特征依然保留。我们可以查看这二维数据保留了多少变量信息：</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [11]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">pca</span><span class="o">.</span><span class="n">explained_variance_ratio_</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">
<div class="prompt output_prompt">Out[11]:</div>


<div class="output_text output_subarea output_execute_result">
<pre>0.97763177502480336</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="There's-more...">There's more...<a class="anchor-link" href="reducing-dimensionality-with-pca.html#There's-more...">¶</a>
</h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>PCA对象还可以一开始设置解释变量的比例。例如，如果我们想介绍98%的变量，PCA对象就可以这样创建：</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [15]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">pca</span> <span class="o">=</span> <span class="n">decomposition</span><span class="o">.</span><span class="n">PCA</span><span class="p">(</span><span class="n">n_components</span><span class="o">=.</span><span class="mi">98</span><span class="p">)</span>
<span class="n">iris_X_prime</span> <span class="o">=</span> <span class="n">pca</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">iris_X</span><span class="p">)</span>
<span class="n">pca</span><span class="o">.</span><span class="n">explained_variance_ratio_</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">
<div class="prompt output_prompt">Out[15]:</div>


<div class="output_text output_subarea output_execute_result">
<pre>0.99481691454981014</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [16]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">iris_X_prime</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">
<div class="prompt output_prompt">Out[16]:</div>


<div class="output_text output_subarea output_execute_result">
<pre>(150, 3)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>由于我们想比二维主成份解释更多的变量，第三维就需要了。</p>

</div>
</div>
</div>
    </div>
  </div>

    </div>
    <aside class="postpromonav"><nav><ul itemprop="keywords" class="tags">
<li><a class="tag p-category" href="../categories/chs.html" rel="tag">CHS</a></li>
            <li><a class="tag p-category" href="../categories/ipython.html" rel="tag">ipython</a></li>
            <li><a class="tag p-category" href="../categories/machine-learning.html" rel="tag">Machine Learning</a></li>
            <li><a class="tag p-category" href="../categories/python.html" rel="tag">Python</a></li>
            <li><a class="tag p-category" href="../categories/scikit-learn-cookbook.html" rel="tag">scikit-learn cookbook</a></li>
        </ul>
<ul class="pager hidden-print">
<li class="previous">
                <a href="putting-it-all-together-with-pipelines.html" rel="prev" title="putting-it-all-together-with-pipelines">Previous post</a>
            </li>
            <li class="next">
                <a href="scaling-data-to-the-standard-normal.html" rel="next" title="scaling-data-to-the-standard-normal">Next post</a>
            </li>
        </ul></nav></aside><script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> </script><script type="text/x-mathjax-config">
MathJax.Hub.Config({
    tex2jax: {
        inlineMath: [ ['$','$'], ["\\(","\\)"] ],
        displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
        processEscapes: true
    },
    displayAlign: 'center', // Change this to 'center' to center equations.
    "HTML-CSS": {
        styles: {'.MathJax_Display': {"margin": 0}}
    }
});
</script></article>
</div>
        <!--End of body content-->

        <footer id="footer">
            Contents © 2017         <a href="mailto:muxuezi@gmail.com">Tao Junjie</a> - Powered by         <a href="https://getnikola.com" rel="nofollow">Nikola</a>         
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0">
<img alt="Creative Commons License BY-NC-SA" style="border-width:0; margin-bottom:12px;" src="http://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png"></a>
            
        </footer>
</div>
</div>


            <script src="../assets/js/all-nocdn.js"></script><script>$('a.image-reference:not(.islink) img:not(.islink)').parent().colorbox({rel:"gal",maxWidth:"100%",maxHeight:"100%",scalePhotos:true});</script><!-- fancy dates --><script>
    moment.locale("en");
    fancydates(0, "YYYY-MM-DD HH:mm");
    </script><!-- end fancy dates --><script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-51330059-1', 'auto');
  ga('send', 'pageview');

</script>
</body>
</html>
